import { App } from 'vue';
import { resource } from './global';
import { ExampleTsx } from './component';
import { presetAppCounterPluginProvider } from './counter';
import { IBizViewPlugin } from './view';
import IBizControlPlugin from './control';
import IBizFormUserControl from './form-user-control';
import IBizEditorPlugin from './editor';
import IBizGridColumnPlugin from './grid-column';
import { presetUIActionPluginProvider } from './ui-action';
import { presetDEMethodPluginProvider } from './de-action';
import IBizPanelItemPlugin from './panel-item';
import IBizPortletPlugin from './portlet';
import { presetUILogicNodePluginProvider } from './ui-logic-node';
import IBizToolbarItemPlugin from './toolbar-item';
import IBizAcItemPlugin from './ac-item';

export default {
  install(app: App) {
    resource.loadStyle(['/style.css']);

    // 注册组件
    app.component('ExampleTsx', ExampleTsx);

    // 计数器插件
    presetAppCounterPluginProvider();

    // 视图插件
    app.use(IBizViewPlugin);

    // 部件插件
    app.use(IBizControlPlugin);

    // 表单成员插件
    app.use(IBizFormUserControl);

    // 编辑器插件
    app.use(IBizEditorPlugin);

    // 表格列插件
    app.use(IBizGridColumnPlugin);

    // 界面行为插件
    presetUIActionPluginProvider();

    // 实体行为插件
    presetDEMethodPluginProvider();

    // 面板成员插件
    app.use(IBizPanelItemPlugin);

    // 门户部件插件
    app.use(IBizPortletPlugin);

    // 界面逻辑节点插件
    presetUILogicNodePluginProvider();

    // 工具栏项插件
    app.use(IBizToolbarItemPlugin);

    // 自填列表项插件
    app.use(IBizAcItemPlugin);
  },
};
